iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
Mobile Development

從零開始的IOS開發日常系列 第 22

# Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (4) 鬧鐘基本資訊編輯

  • 分享至 

  • xImage
  •  

上次講完如何建立新增重複天數的功能之後,接下來要介紹的是更改備註、更改鈴聲、是否會震動(做 UI 即可)

更改備註

點進去之後會跳到這個頁面

跳進來的頁面其實就一個 TextField 而已,把要更改的內容放在單例傳到主頁面即可!

class label_text : NSObject {
    var label = "Alarm"
    static let shareinstance = label_text()
    private override init() {
    }
}

class set_labelVC: UIViewController {

    @IBOutlet weak var label_tf: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        label_tf.text! = label_text.shareinstance.label
    }

    @IBAction func back(_ sender: Any) {
        label_text.shareinstance.label =  label_tf.text!
        self.navigationController?.popViewController(animated: true)
    }

}

更改鈴聲

點進去之後會跳到這個頁面

上面的是用 TextView 放的,做法和更改重複天數的方法很像,只是沒有重複勾選的部分!

一樣先設一個單例來放置他更改的鈴聲值

class Sound_select  {
    var sound_select = "Rader"
    static let sharedsound = Sound_select()
    private init() {}
}

再來要設置一個陣列來存放擁有的鈴聲清單,可以放到 TabelView 裡
還要設置打勾的值目前是哪一個(預設是 Radar 所以我們給他 Radar)

let sound = ["Radar" , "Marimba" , "Opening" , "Waves" , "XyloPhone"]
    var check = "Radar"

再來就是設定 TabelView 的內容了,步驟重複,這裡就不再多贅述

extension set_soundVC : UITableViewDataSource , UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        sound.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableview.dequeueReusableCell(withIdentifier: "sound_cell", for: indexPath) as! sound_cell
        cell.sound_label.text = sound[indexPath.row]
        if check == sound[indexPath.row] {
            cell.accessoryType = .checkmark
        }
        else {
            cell.accessoryType = .none
        }
        return cell
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        check = sound[indexPath.row]
        Sound_select.sharedsound.sound_select = sound[indexPath.row]
        tableView.reloadData()
    }
    
}

資料最後再傳到單例並更新 TabelView 畫面即可!

是否開起震動(這邊只做 UI )

這邊做得比較簡單,把程式碼做在這頁即可
我們只需要放一個 Switch 開關,並設定他為 Boolean ,按下 Save 的時候,回傳 Switch 的狀況,最後再傳到單例即可

class snooze_switch {
    var snooze_select = true
    static let snooze_shared = snooze_switch()
    private init() {}
}         //單例

if snooze_switch.snooze_shared.snooze_select == true
        {
            snooze.isOn = true
        }
        else
        {
            snooze.isOn = false
        }
         //判斷

上一篇
[鐵人賽 Day 21] Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (3) 重複天數程式碼
下一篇
[鐵人賽 Day 23] # Swift 仿刻 IOS 內建的 Clock - 鬧鐘 (5) 將資料轉到資料庫儲存以及“新增鬧鐘介面功能完整介紹”
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言